import router from '@/router'
import store from '@/store'
import {isDevModeMenu} from '../utils/lowAppUtils'

// 应用开发路由守卫
router.beforeEach((to, from, next) => {
  // 判断是否是应用路由
  if (to.fullPath.startsWith('/app/')) {
    setIsApp(true)
    let devMode
    // 如果未初始化就从缓存中获取
    if (!store.state.lowApp.initialed) {
      devMode = store.getters.getLowAppDevModeByLs(to.params.appId)
    } else {
      devMode = store.getters.getLowAppDevMode
    }
    let menuList = store.state.lowApp.menuList
    if (!devMode) {
      if (isDevModeMenu(to.name)) {
        // 跳转到重定向页面
        next({...to, name: 'low-app-@appId-redirect'})
      } else {
        next()
      }
    } else {
      next()
    }
  } else {
    setIsApp(false)
    next()
  }
})

// 上一次赋值的属性
let lastValue = false

// 给 html 添加属性，以标识当前是 app 环境
function setIsApp(flag) {
  // 判断是否已添加，只有当数据变动时才进行操作dom
  if (flag === lastValue) {
    return
  }
  lastValue = flag
  let html = null
  let elements = document.getElementsByTagName('html')
  if (elements && elements[0]) {
    html = elements[0]
  } else {
    return
  }
  if (flag) {
    html.setAttribute('data-low-app', '')
  } else {
    html.removeAttribute('data-low-app')
  }
}
